<?php

/**
 * compras actions.
 *
 * @package    dirsac
 * @subpackage compras
 * @author     Miguel Flores
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class comprasActions extends autocomprasActions
{
	public function executePendiente(sfWebRequest $request)
  {
    $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Pendiente')
      ->execute();
      
      $this->filter = new CompraNacionalFormFilter();
      $this->setTemplate('index');
  }

	public function executeTodas(sfWebRequest $request)
  {
   $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
                   ->createQuery('c')
                   ->execute();
      
   $this->filter = new CompraEspecialFormFilter();
   $this->setTemplate('index');
  }

	public function executeIndex(sfWebRequest $request)
  {
    //$this->compra_internacional_list = Doctrine::getTable('CompraInternacional')->findAll();
    if ($this->getUser()->hasCredential('Comprador')) {
           $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
				   ->createQuery('c')
				   ->where("c.estado = 'Aprobada por Finanzas'")
                   ->execute();
    }
    if ($this->getUser()->hasCredential('Abastecimiento')) {
           $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
                   ->createQuery('c')
                   ->where("c.estado = 'Pendiente'")
                   ->execute();
    }
    if ($this->getUser()->hasCredential('Finanzas')) {
           $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
                   ->createQuery('c')
                   ->where("c.estado = 'Aprobada por Abastecimiento'")
                   ->execute();
    }
      
   $this->filter = new CompraNacionalFormFilter();
   $this->setTemplate('index');
  }

// Código del Filtro

  public function executeFilter(sfWebRequest $request)
	{
		$filter_values = $request->getParameter('compra_nacional_filters');
		$this->filter = new CompraNacionalFormFilter();
		$this->filter -> bind($filter_values);
		$this->consulta = $this->filter->buildQuery($this->filter->getValues());
		
		$this->compra_nacional_list = $this->consulta->execute();

		$this->setTemplate('index');
	}


	public function executeEnviar(sfWebRequest $request)
  {
    $this->compra_nacional = Doctrine::getTable('CompraNacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_nacional);
    
    // Cambiamos el estado
    $this->compra_nacional->enviar();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    $file = CompraNacional::generarPdf($request->getParameter('id'));
    
    // Enviamos el correo
    $this->compra_nacional->correo('enviar', $file, $this->compra_nacional->getCorreoEncargado());
    
    // Volvemos al template
    $this->setTemplate('show');
  }

	
  public function executeSubmit(sfWebRequest $request){
    //$tainted_values = $request->getParameter('event');
    $tainted_values = $request->getParameter('compra');
    
    //$event = Doctrine::getTable('Event')->find($tainted_values['id']);
    $compra = Doctrine::getTable('CompraNacional')->find($tainted_values['id']);

    //$this->form = new EventForm($event);
    $this->form = new CompraNacionalForm($compra);
	
    if($request->isMethod('post') && $this->form->bindAndSave($tainted_values))
      $this->redirect('@comprashome');

    $this->setTemplate('edit');
  }
  
  public function executeTransacciones(sfWebRequest $request) 
  {
  	$this->compra = Doctrine::getTable('CompraNacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra);
    	
    $this->transacciones = Doctrine::getTable('Transaccion')
    	->createQuery('t')
    	->where("t.compra_id = '".$this->compra->getId()."'")
    	->andWhere("t.modulo = 'CompraNacional'")
    	->execute();
  }
  
  public function executeBorrador(sfWebRequest $request)
  {
    $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Borrador')
      ->execute();
      
      $this->filter = new CompraNacionalFormFilter();
      $this->setTemplate('index');
  }
  
  public function executeAprobada(sfWebRequest $request)
  {
    $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Aprobada por Abastecimiento')
      ->orWhere('a.estado = ?', 'Aprobada por Finanzas')
      ->execute();
      
      $this->filter = new CompraNacionalFormFilter();
      $this->setTemplate('index');
  }

  public function executeAprobar(sfWebRequest $request)
  {
    $this->compra_nacional = Doctrine::getTable('CompraNacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_nacional);
    
    $this->compra_nacional->aprobar();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    $file = CompraNacional::generarPdf($request->getParameter('id'));
    
    // Enviamos el correo
    $this->compra_nacional->correo('aprobar', $file, $this->compra_nacional->getCorreoEncargado());
    
    $this->setTemplate('show');
  }
  
  
  public function executeAprobadaFinanzas(sfWebRequest $request)
  {
    $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Aprobada por Finanzas')
      ->execute();
      
      $this->filter = new CompraNacionalFormFilter();
      $this->setTemplate('index');
  }

  public function executeAprobarFinanzas(sfWebRequest $request)
  {
    $this->compra_nacional = Doctrine::getTable('CompraNacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_nacional);
    
    $this->compra_nacional->aprobarFinanzas();
    
    $compra = Doctrine::getTable('CompraNacional')->find($request->getParameter('id'));
   
   $transaccion = new Transaccion();
   $transaccion->setCuentaId($compra->getCuentaId());
   $transaccion->setCompraId($compra->getId());
   $transaccion->setModulo('CompraNacional');
   $transaccion->setTipo('Egreso');
   $transaccion->setMonto($compra->getTotal());
   $transaccion->save();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    $file = CompraNacional::generarPdf($request->getParameter('id'));
    
    // Enviamos el correo
    $this->compra_nacional->correo('aprobarFinanzas', $file, $this->compra_nacional->getCorreoEncargado());
    
    $this->setTemplate('show');
  }
  
  public function executeRechazada(sfWebRequest $request)
  {
    $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Rechazada por Abastecimiento')
      ->orWhere('a.estado = ?', 'Rechazada por Finanzas')
      ->execute();
      
      $this->filter = new CompraNacionalFormFilter();
      $this->setTemplate('index');
  }

  public function executeRechazar(sfWebRequest $request)
  {
    $this->compra_nacional = Doctrine::getTable('CompraNacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_nacional);
    
    $this->compra_nacional->rechazar();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    $file = CompraNacional::generarPdf($request->getParameter('id'));
    //$file = generarPdf($request->getParameter('id'));
    
    // Enviamos el correo
    $this->compra_nacional->correo('rechazar', $file, $this->compra_nacional->getCorreoEncargado());
    $this->setTemplate('show');
  } 
  public function executeRechazadaFinanzas(sfWebRequest $request)
  {
    $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Rechazada por Finanzas')
      ->execute();
      
      $this->filter = new CompraNacionalFormFilter();
      $this->setTemplate('index');
  }

  public function executeRechazarFinanzas(sfWebRequest $request)
  {
    $this->compra_nacional = Doctrine::getTable('CompraNacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_nacional);
    
    $this->compra_nacional->rechazarFinanzas();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    $file = CompraNacional::generarPdf($request->getParameter('id'));
    //$file = generarPdf($request->getParameter('id'));
    
    // Enviamos el correo
    $this->compra_nacional->correo('rechazarFinanzas', $file, $this->compra_nacional->getCorreoEncargado());
    $this->setTemplate('show');
  }      
  
  public function executeRecibida(sfWebRequest $request)
  {
    $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Recibida')
      ->execute();
      
      $this->filter = new CompraNacionalFormFilter();
      $this->setTemplate('index');
  }

  public function executeRecibir(sfWebRequest $request)
  {
    $this->compra_nacional = Doctrine::getTable('CompraNacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_nacional);
    
    $this->compra_nacional->recibir();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    $file = CompraNacional::generarPdf($request->getParameter('id'));
    //$file = generarPdf($request->getParameter('id'));
    
    // Enviamos el correo
    $this->compra_nacional->correo('recibir', $file, $this->compra_nacional->getCorreoEncargado());
    $this->setTemplate('show');
  } 
  
  public function executeFallada(sfWebRequest $request)
  {
    $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Fallada')
      ->execute();
      
      $this->filter = new CompraNacionalFormFilter();
      $this->setTemplate('index');
  }

  public function executeFallar(sfWebRequest $request)
  {
    $this->compra_nacional = Doctrine::getTable('CompraNacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_nacional);
    
    $this->compra_nacional->fallar();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    $file = CompraNacional::generarPdf($request->getParameter('id'));
    //$file = generarPdf($request->getParameter('id'));
    
    // Enviamos el correo
    $this->compra_nacional->correo('fallar', $file, $this->compra_nacional->getCorreoEncargado());
    $this->setTemplate('show');
  } 
  
  public function executeEntregada(sfWebRequest $request)
  {
    $this->compra_nacional_list = Doctrine::getTable('CompraNacional')
      ->createQuery('a')
      ->where('a.estado = ?', 'Entregada')
      ->execute();
      
      $this->filter = new CompraNacionalFormFilter();
      $this->setTemplate('index');
  }

  public function executeEntregar(sfWebRequest $request)
  {
    $this->compra_nacional = Doctrine::getTable('CompraNacional')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->compra_nacional);
    
    $this->compra_nacional->entregar();
    
    // Generamos el Pdf
    //$file = 'uploads/test.pdf';
    $file = CompraNacional::generarPdf($request->getParameter('id'));
    //$file = generarPdf($request->getParameter('id'));
    
    // Enviamos el correo
    $this->compra_nacional->correo('entregar', $file, $this->compra_nacional->getCorreoEncargado());
    $this->setTemplate('show');
  } 
  
  
  public function executeAdd(sfWebRequest $request){
    $this->forward404unless($request->isXmlHttpRequest());
    $number = intval($request->getParameter("num"));

    //$this->form = new EventForm();
    $this->form = new CompraNacionalForm();

    $this->form->addNewFields($number);

    return $this->renderPartial('addNew',array('form' => $this->form, 'number' => $number));
  }

  public function executeNew(sfWebRequest $request){
    //$event = new Event();
    $compra = new CompraNacional();
    
    //$this->form = new EventForm($event);
    $this->form = new CompraNacionalForm($compra);

    $this->form->addNewFields(0);

    $this->setTemplate('edit');
  }
}
